package demo2;

 abstract class Shape{
     public Shape(){
         //用来让子类调用，帮助这个抽象类初始化自己的成员
     }
    public abstract void draw();//{方法没有具体的实现，呗abstract修饰
        //System.out.println("画图形");
    //}抽象类不能被实例化，只能被继承
}
class Rect extends Shape{//当一个普通类继承这个抽象类，要重写这个抽象类中的所有抽象方法
    @Override
    public void draw() {
        System.out.println("矩形");
    }
}
class Flower extends Shape{
    @Override
    public void draw() {
        System.out.println("❀");
    }
}

public class Test {
     public static void drawMap(Shape shape){
         shape.draw();
     }
    public static void main(String[] args) {
        Shape shape=new Rect();//向上转型
        drawMap(shape);
        shape.draw();
        drawMap(new Flower());//匿名对象（不能重复使用）
        new Rect().draw();
    }
}
